using System;
using System.Collections.Generic;
using SinBiota.Model.Entities;

namespace SinBiota.Model.Business.PersistenceServices.Interfaces
{
    public interface IUserPersistenceServices
    {
        User FindById(int id);
        IList<User> FindAll();
        void Delete(User user);
        void DeleteById(int id);
        void Save(User user);
        void Update(User editUser);
        void Update(User editUser, string[] coordinatorField, string[] memberField); 
        
        User FindByUsername(string username);
        User FindByName(string name);
        IList<User> FindByEmail(string email);

        IList<User> FindByNameOrUsernameLike(string search);
        IList<Project> ProjectsFromUser(string username);
        IList<Project> ActiveProjectsFromUser(string username);

        string NewPasswordResetRequest(User user);
        PasswordResetStatus GetPasswordResetRequestStatus(User user, string key);
        void RemovePasswordResets(User user);
    }
}